<?php
/**
 * Created by PhpStorm.
 * User: George
 * Date: 2017/9/25
 * Time: 10:47
 */

namespace AdminBundle\Task;


use AdminBundle\Entity\TaskQueueWaiting;

class TaskFactory
{
    private static $taskMap = [
        // 群操作
        'WXQuitAllRoomTask' => 'QuitAllRoomTask',// 退出全部群聊
        'WXInvitedJoinRoomTask' => 'InvitedJoinRoomTask',// 邀请好友入群【常规】
        'WXQrcodeInviteRoomTask' => 'QrcodeInviteRoomTask',// 邀请好友入群【大群】
        'WXQrcodeJoinRoomTask' => 'QrcodeJoinRoomTask',// 扫码入群【大群】
        // 好友操作
        'WXAddFriendTask' => 'NewContactOfFriendTask',// 添加熟人好友:聊天时用到
        'WXAddLabourTask' => 'NewContactOfLabourTask',// 添加营销好友:发名片，入群时用到
        'WXAddCardTask' => 'NewContactOfCardTask',// 添加名片好友:做为名片发送给营销用户入群时用到
        'WXUploadFriendsInfoTask' => 'ContactUploadTask',// 成员好友:上报成员好友,粉丝信息
        // 聊天操作
        'WXChatToSendCardTask' => 'ChatToSendCardTask',// 名片营销聊天:发送话术与名片好友的名片
        'WXChatToSendQrcodeTask' => 'ChatToSendQrcodeTask',// 二维码营销聊天:发送话术与二维码
        'WXChatToContactTask' => 'ChatToContactTask',// 熟人聊天:熟人成员好友聊天
        // 朋友圈操作
        'WXTimeLineDeleteTask' => 'TimeLineDeleteTask',// 删除朋友圈:删除朋友圈-营销内容，
        'WXTimeLineB2CTask' => 'TimeLineB2CTask',// 发朋友圈:发朋友圈-营销内容，
        'WXTimeLineTask' => 'TimeLineTask',// 发朋友圈:发朋友圈，
        'WXMoments' => 'MomentsBrowseTask',// 朋友圈:浏览朋友圈,点赞,发评论
        // 其他
        'WXOfficialAccounts' => 'OfficialAccountsBrowseTask',// 公众号:公众号，
        'WXShopping' => 'ShoppingBrowseTask',// 电商:浏览电商信息，深度访问
        'WXWallet' => 'WalletBrowseTask',// 生活:浏览钱包，
        'WXGames' => 'GamesBrowseTask',// 游戏:浏览游戏,深度访问
    ];


    public static function create(TaskQueueWaiting $taskQueueWaiting, $debug = false)
    {
        $uri = $taskQueueWaiting->getUri();
        if (isset(self::$taskMap[$uri]) == false) {
            throw new \InvalidArgumentException($uri . ' not exist.');
        }

        $class = sprintf("%s\\%s", __NAMESPACE__, self::$taskMap[$uri]);
        $task = new $class($debug);
        $task->setTask($taskQueueWaiting);
        return $task;
    }
}